let range = {
	from: 1,
	to: 5,

	// (1) 异步迭代器
	[Symbol.asyncIterator]() {
		// 迭代器对象
		return {
			current: this.from,
			last: this.to,

			// (2) 异步 next() 方法
			async next() {
				// (3) 等待 1 秒
				await new Promise((reslove) => setTimeout(reslove, 1000))

				if (this.current <= this.last) {
					return {
						done: false,
						value: this.current++,
					}
				} else {
					return {
						done: true,
					}
				}
			},
		}
	},
}

;(async () => {
	for await (const value of range) {
		console.log(value) // 1 2 3 4 5 （每隔 1 秒打印一次）
	}
})()

// **************************************************************************************************************************************

// * Spread 语法 ... 无法异步工作，需要常规的同步 iterator 的功能，无法与异步 iterator 一起使用。
